home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #1 / Amiga Plus CD - 2000 - No. 1.iso / Games / Starter / JST / Developer / sources / OSEmu / keyboard.s < prev    next >
Encoding:
Text File  |  1999-12-03  |  1.1 KB  |  56 lines

  1. * $Id: keyboard.s 1.1 1999/02/03 04:10:31 jotd Exp $
  2. **************************************************************************
  3. *   KEYBOARD DEVICE                                                      *
  4. **************************************************************************
  5. **************************************************************************
  6. *   INITIALIZATION                                                       *
  7. **************************************************************************
  8.  
  9. ReadMatrix:
  10.     movem.l    D0/A0-A2,-(A7)
  11.     lea    KeyboardMatrix(pc),A2
  12.     move.l    (IO_DATA,A1),A0
  13.     move.l    (IO_LENGTH,A1),D0
  14.     beq.b    .exit
  15. .copy:
  16.     move.b    (A2)+,(A0)+
  17.     subq.l    #1,D0
  18.     bne.b    .copy
  19. .exit
  20.     movem.l    (A7)+,D0/A0-A2
  21.     rts
  22.  
  23. StoreKbValue:
  24.     bsr    UpdKbMatrix
  25.  
  26.     rts
  27.  
  28. ; < D0: raw keycode
  29.  
  30. UpdKbMatrix:
  31.     movem.l    D0-D2/A0,-(A7)
  32.     lea    KeyboardMatrix(pc),A0
  33.  
  34.     and.l    #$FF,D0
  35.     move.b    D0,D2
  36.  
  37.     move.b    D0,D1
  38.  
  39.     and.b    #7,D1    ; D1 MOD 8
  40.     lsr.b    #3,D0    ; D0 DIV 8
  41.  
  42.     add.l    D0,A0
  43.  
  44.     btst    #7,D2    ; key up or down?
  45.     beq    .down
  46.     bclr    D1,(A0)
  47.     bra    .exit
  48. .down
  49.     bset    D1,(A0)
  50. .exit
  51.     movem.l    (A7)+,D0-D2/A0
  52.     rts
  53.  
  54. KeyboardMatrix:
  55.     blk.b    20,0
  56.